/**
 *
 * 处理两处数据，
 * 第一处是点击新增按钮，填写完唯一性验证信息后返回的数据
 * 第二处是点击修改，返回的页面数据内容
 *
 * */

import renderRowOperator from './renderRowOperator';

const ignoreList = ['formrelation', 'code', 'gridrelation', 'ncc60071025list', 'validateFlag'];
const areaCodeListIgnoreList = ['ncc60071025list', 'bd_psndoc', 'hi_psnorg_h', 'hi_psnjob_h', 'ncc60071025query', 'keypsngrp', 'multiadd'];

const formList = ['bd_psndoc', 'hi_psnorg_h', 'hi_psnjob_h'];

export default function (res, cb) {

    let meta = this.props.meta.getMeta();
    let {allArea, busiSet, areaCodeList, image} = res.data;
    let nList = [];

    areaCodeList.forEach((item) => {
        if(!areaCodeListIgnoreList.includes(item)) {
            nList.push(item)
        }
    });
    res.data.areaCodeList = nList;

    Object.keys(allArea).forEach((key) => {
        if (ignoreList.indexOf(key) < 0) {
            meta[key] = allArea[key];
            meta['gridrelation'][key] = {
                destBrowseAreaCode: null,
                destEditAreaCode: null,
                srcAreaCode: key,
                tabRelation: [key]
            };
        }
    });

    let template = renderRowOperator.call(this, meta, areaCodeList, busiSet);
    template['ncc60071025list'].items.forEach((item) => {
        item.width = '120px';
    });
    template['createuser'].items.forEach((item) => {
        item.width = '122px';
    });
    // 隐藏照片
    template['bd_psndoc'].items.forEach((item) => {
        if(item.attrcode === 'photo') {
            item.visible = false
        }
    });
    /**
     * 这里这么做的目的
     * 首先说原因，因为form里的某些参照的查询条件是动态的
     * 这就造成了查询条件查回来的时候，参照拿着默认的queryCondition去请求了
     * 于是在这里设定了queryCondition为一个对象，利用了对象存储的是指针的原理
     * 当请求回来的时候利用这个指针修改queryCondition数据，
     * 这样就会让参照拿到的是动态的请求条件
     */
    formList.forEach((formKey) => {
        template[formKey].items.map((item) => {
            item['queryCondition'] = item.queryCondition || {};

            if (item.itemtype === 'datetimepicker') {
                item.disabled = false;
            }
        });
    });


    this.props.meta.setMeta(template, () => {
        this.setState({
            addPageTemplate: res.data,
            imageData: image
        }, () => {
            cb && cb.call(this);
        });
    });
}
